<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  
  <title>MySQL数据库常见名词对比 | 程序小工  | Just do it!</title>
  <meta name="description" content="遇见更好的自己~" />
  <meta name="keywords" content="" />
  <meta name="HandheldFriendly" content="True" />
  <meta name="apple-mobile-web-app-capable" content="yes">
  <link rel="shortcut icon" href="/">
  <link rel="alternate" href="/atom.xml" title="程序小工  | Just do it!">
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  <meta name="description" content="MySQL 由于性能高、成本低、可靠性好，已经成为最流行的开源数据库，因此被广泛地应用在 Internet 上的中小型网站中。随着 MySQL 的不断成熟，它也逐渐用于更多大规模网站和应用，比如维基百科、Google 和 Facebook 等网站。非常流行的开源软件组合 LAMP 中的“M”指的就是 MySQL。">
<meta name="keywords" content="mysql">
<meta property="og:type" content="article">
<meta property="og:title" content="MySQL数据库常见名词对比">
<meta property="og:url" content="http://blog.i2arch.tech/2018/06/05/mysql-compare/index.html">
<meta property="og:site_name" content="程序小工  | Just do it!">
<meta property="og:description" content="MySQL 由于性能高、成本低、可靠性好，已经成为最流行的开源数据库，因此被广泛地应用在 Internet 上的中小型网站中。随着 MySQL 的不断成熟，它也逐渐用于更多大规模网站和应用，比如维基百科、Google 和 Facebook 等网站。非常流行的开源软件组合 LAMP 中的“M”指的就是 MySQL。">
<meta property="og:locale" content="zh-Hans">
<meta property="og:updated_time" content="2018-08-14T07:54:47.237Z">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="MySQL数据库常见名词对比">
<meta name="twitter:description" content="MySQL 由于性能高、成本低、可靠性好，已经成为最流行的开源数据库，因此被广泛地应用在 Internet 上的中小型网站中。随着 MySQL 的不断成熟，它也逐渐用于更多大规模网站和应用，比如维基百科、Google 和 Facebook 等网站。非常流行的开源软件组合 LAMP 中的“M”指的就是 MySQL。">
    
  <link href="https://fonts.googleapis.com/css?family=Inconsolata|Titillium+Web" rel="stylesheet">
  <link href="https://fonts.googleapis.com/css?family=Roboto+Mono" rel="stylesheet">
  <link href='//cdn.bootcss.com/node-waves/0.7.5/waves.min.css' rel='stylesheet'>
  <link rel="stylesheet" href="/style.css">
  <script>
    function setLoadingBarProgress(num) {
      document.getElementById('loading-bar').style.width=num+"%";
    }
  </script>
</head>

<body>
  <div id="loading-bar-wrapper">
  <div id="loading-bar"></div>
</div>


  <script>setLoadingBarProgress(20)</script>
  <header class="l_header">
	<div class='wrapper'>
		<div class="nav-main container container--flex">
			<a class="logo flat-box" href='/' >
				程序小工  | Just do it!
			</a>
			<div class='menu'>
				<ul class='h-list'>
					
						<li>
							<a class='flat-box nav-home' href='/'>
								<i class='icon icon-list2'></i>
								首页
							</a>
						</li>
					
						<li>
							<a class='flat-box nav-archives' href='/archives'>
								<i class='icon icon-bookmark'></i>
								归档
							</a>
						</li>
					
						<li>
							<a class='flat-box nav-about' href='/about'>
								<i class='icon icon-user'></i>
								关于
							</a>
						</li>
					
				</ul>
				<div class='underline'></div>
			</div>
			
				<div class="m_search">
					<form name="searchform" class="form u-search-form">
						<input type="text" class="input u-search-input" placeholder="Search" />
						<span class="icon icon-search"></span>
					</form>
				</div>
			
			<ul class='switcher h-list'>
				
					<li class='s-search'><a href='javascript:void(0)'><span class="icon icon-search flat-box"></span></a></li>
				
				<li class='s-menu'><a href='javascript:void(0)'><span class="icon icon-menu flat-box"></span></a></li>
			</ul>
		</div>

		<div class='nav-sub container container--flex'>
			<a class="logo" class="flat-box" href='javascript:void(0)'>
				Word of Forks
			</a>

			<ul class='switcher h-list'>
				<li class='s-comment'><a href='javascript:void(0)'><span class="icon icon-chat_bubble_outline flat-box"></span></a></li>
				<li class='s-top'><a href='javascript:void(0)'><span class="icon icon-arrow_upward flat-box"></span></a></li>
				<li class='s-toc'><a href='javascript:void(0)'><span class="icon icon-format_list_numbered flat-box"></span></a></li>
			</ul>
		</div>
	</div>
</header>
<aside class="menu-phone">
	<nav>
		
			<a href="/" class="nav-home nav">
				首页
			</a>
		
			<a href="/archives" class="nav-archives nav">
				归档
			</a>
		
			<a href="/about" class="nav-about nav">
				关于
			</a>
		
	</nav>
</aside>

    <script>setLoadingBarProgress(40);</script>
  <div class="l_body">
    <div class='container clearfix'>
      <!-- 左侧内容 -->
      <div class='l_main'>
        <article id="post-mysql-compare"
  class="post white-box article-type-post"
  itemscope itemprop="blogPost">
	<section class='meta'>

	<h2 class="title">
  	<a href="/2018/06/05/mysql-compare/">
    	MySQL数据库常见名词对比
    </a>
	</h2>

	<div class="pagenav">
		<time>
			2018-06-05
		</time>

		
    
    <div class='cats'>
        <i class="icon icon-bookmark"></i>
        <a href="/categories/MySQL/">MySQL</a>
    </div>


		
			<div class="pagetags">
				<i class="icon icon-price-tag" style="margin-right: 2px;"></i>
				
					<a href="/tags/mysql/" style="margin-left: 3px;">
						mysql
					</a>
				
			</div>
			
	</div>
	</section>

	
	<section class="toc-wrapper"><ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#1存储引擎-myisam-vs-innodb"><span class="toc-text"> 1.存储引擎 — MyISAM vs InnoDB</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#1存储方式"><span class="toc-text"> (1)存储方式</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#2物理顺序"><span class="toc-text"> (2)物理顺序</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#3特定功能"><span class="toc-text"> (3)特定功能</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#4并发处理能力"><span class="toc-text"> (4)并发处理能力</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#5空间空洞"><span class="toc-text"> (5)空间空洞</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#6总结"><span class="toc-text"> (6)总结</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#2字段类型"><span class="toc-text"> 2.字段类型</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#1varchar-vs-char"><span class="toc-text"> (1)varchar vs char</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#2datetime-vs-timestamp"><span class="toc-text"> (2)datetime vs timestamp</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#3decimal-vs-double"><span class="toc-text"> (3)decimal vs double</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#4enum-vs-set"><span class="toc-text"> (4)enum vs set</span></a></li></ol></li></ol></section>
	

	<section class="article typo">
		<div class="article-entry" itemprop="articleBody">
				<span class="zhaiyao">[摘要]</span>
			<p>MySQL 由于性能高、成本低、可靠性好，已经成为最流行的开源数据库，因此被广泛地应用在 Internet 上的中小型网站中。随着 MySQL 的不断成熟，它也逐渐用于更多大规模网站和应用，比如维基百科、Google 和 Facebook 等网站。非常流行的开源软件组合 LAMP 中的“M”指的就是 MySQL。</p>
<a id="more"></a>
<h2 id="1存储引擎-myisam-vs-innodb"><a class="markdownIt-Anchor" href="#1存储引擎-myisam-vs-innodb"></a> 1.存储引擎 — <code>MyISAM</code> vs <code>InnoDB</code></h2>
<h3 id="1存储方式"><a class="markdownIt-Anchor" href="#1存储方式"></a> (1)<strong>存储方式</strong></h3>
<p>每种存储引擎下的数据表创建成功后都会生成相应格式的文件</p>
<ul>
<li>
<p>MyISAM： <code>.frm</code> – 结构 <code>.MDY</code> – 数据 <code>.MYI</code> – 索引</p>
</li>
<li>
<p>InnoDB： <code>.frm</code> – 结构 <code>.ibd</code> – 数据+索引</p>
</li>
</ul>
<h3 id="2物理顺序"><a class="markdownIt-Anchor" href="#2物理顺序"></a> (2)<strong>物理顺序</strong></h3>
<p><code>MyISAM</code>： 依插入顺序</p>
<p><code>InnoDB</code>： 依主键顺序</p>
<h3 id="3特定功能"><a class="markdownIt-Anchor" href="#3特定功能"></a> (3)<strong>特定功能</strong></h3>
<p>MyISAM:</p>
<ul>
<li>支持全文索引(鸡肋)</li>
<li>存储空间少</li>
<li>文件级别快速备份（将生成的文件直接拷贝到相应位置，需要还原时直接拷贝回来）</li>
</ul>
<p>InnoDB:</p>
<ul>
<li>外键</li>
<li>事务</li>
<li>行级锁定</li>
</ul>
<h3 id="4并发处理能力"><a class="markdownIt-Anchor" href="#4并发处理能力"></a> (4)<strong>并发处理能力</strong></h3>
<p>MyISAM：</p>
<ul>
<li>锁定粒度：表级</li>
<li>并发插入（在表中执行其他操作时，可以同事执行插入工作，大多数情况是不需要考虑锁的问题。因为插入不影响其他记录的操作，在最后插入）</li>
</ul>
<p>InnoDB：</p>
<ul>
<li>锁定粒度：表级 + 行级</li>
<li>多版本并发控制 MVCC(<code>Multi-Version Concurrency Control</code>)，实现无阻塞读操作</li>
</ul>
<blockquote>
<p>Multi-Version Concurrency Control 多版本并发控制，MVCC 是一种并发控制的方法，一般在数据库管理系统中，实现对数据库的并发访问；在编程语言中实现事务内存。</p>
</blockquote>
<h3 id="5空间空洞"><a class="markdownIt-Anchor" href="#5空间空洞"></a> (5)<strong>空间空洞</strong></h3>
<p>MyISAM：</p>
<ul>
<li>删除表中大量记录后，表结构的文件大小没有变化。需要手动修复空洞空间。<code>repair table table_name</code></li>
</ul>
<p>InnoDB：</p>
<ul>
<li>没有空洞现象。</li>
</ul>
<h3 id="6总结"><a class="markdownIt-Anchor" href="#6总结"></a> (6)<strong>总结</strong></h3>
<p>MyISAM: 以读取和插入为主</p>
<p>InnoDB: 以更新和删除为主（写锁[独占锁，阻塞其他的所有操作]）</p>
<p><strong>总结</strong>：直接用 InnoDB。</p>
<h2 id="2字段类型"><a class="markdownIt-Anchor" href="#2字段类型"></a> 2.字段类型</h2>
<h3 id="1varchar-vs-char"><a class="markdownIt-Anchor" href="#1varchar-vs-char"></a> (1)<strong><code>varchar</code> vs <code>char</code></strong></h3>
<p><code>varchar</code>:</p>
<ul>
<li>优点：变长，占用的空间随着内容的增长而变大，节约空间</li>
<li>缺点：速度稍慢</li>
</ul>
<p><code>char</code>:</p>
<ul>
<li>优点：速度快</li>
<li>缺点：定长，永远占用 4 个直接，无论存储 0，-1,1234567 占用的空间是一致的。</li>
</ul>
<h3 id="2datetime-vs-timestamp"><a class="markdownIt-Anchor" href="#2datetime-vs-timestamp"></a> (2)<strong><code>datetime</code> vs <code>timestamp</code></strong></h3>
<p><code>timestamp</code>: 占用较少的空间，存储时间的范围小</p>
<p><code>datetime</code>: 占用较多的空间，存储时间范围大</p>
<h3 id="3decimal-vs-double"><a class="markdownIt-Anchor" href="#3decimal-vs-double"></a> (3)<strong><code>decimal</code> vs <code>double</code></strong></h3>
<p><code>decimal</code>： 定点数，数据精确。变长的数据类型，随着存储的数据有效位增加，而占用更多的存储空间。</p>
<p><code>double</code>：浮点数，精度丢失。定长的数据类型，永远占用 8 个直接的存储空间（float4 个字节）</p>
<h3 id="4enum-vs-set"><a class="markdownIt-Anchor" href="#4enum-vs-set"></a> (4)<strong><code>enum</code> vs <code>set</code></strong></h3>
<p><code>enum</code>: 枚举，使用一个数表示一个枚举值，占 2 个字节，一共 2^16 个枚举值</p>
<p><code>set</code>: 使用一个位表示一个元素值，占用 8 个直接，一共 8*8 个元素值</p>

		</div>

		
			<div class="art-item-footer">
					
						<span class="art-item-left"><i class="icon icon-chevron-thin-left"></i> <a href="/2018/06/20/summary-monthly2/" rel="prev" title="【总结】两个月的工作任务总结">
							【总结】两个月的工作任务总结
						</a>上一篇文章</span>
					
					
						<span class="art-item-right">下一篇文章：<a href="/2018/05/16/php-无限级分类/" rel="next"  title="PHP实现无限级分类 -- path标识">
							PHP实现无限级分类 -- path标识
						</a><i class="icon icon-chevron-thin-right"></i></span>
					
			</div>
		

		
			

    <div class="recommended_posts">
        <h3>推荐文章</h3>
        <ul>
            
                <li><a href="http://blog.i2arch.tech/2018/06/22/vscode-background/">【VSCode插件】background添加编辑器背景</a></li>
            
                <li><a href="http://blog.i2arch.tech/2018/06/20/summary-monthly2/">【总结】两个月的工作任务总结</a></li>
            
                <li><a href="http://blog.i2arch.tech/2018/05/16/php-无限级分类/">PHP实现无限级分类 -- path标识</a></li>
            
                <li><a href="http://blog.i2arch.tech/2018/05/15/movie-wxsnr/">电影《闻香识女人》</a></li>
            
        </ul>
    </div>


		
	</section>

	

</article>
<script>
	window.subData = {
		title: 'MySQL数据库常见名词对比',
		tools: true
	}
</script>

      </div>

      <!-- 右侧边栏组件 -->
      <aside class='l_side'>
        
      </aside>

      <div class="gotop">
          
    <a href='javascript:void(0)'>
        <i class="icon icon-arrow_upward flat-box">
        </i>
    </a>

      </div>
      <script>setLoadingBarProgress(60);</script>
    </div>
  </div>
  <footer id="footer" class="clearfix">

	<div class="social-wrapper">
  	
      
        <a href="https://github.com/zqunor" class="social github"
          target="_blank" rel="external">
          <span class="icon icon-github"></span>
        </a>
      
        <a href="https://www.cnblogs.com/zqunor" class="social zhihu"
          target="_blank" rel="external">
          <span class="icon icon-zhihu"></span>
        </a>
      
        <a href="/atom.xml" class="social rss"
          target="_blank" rel="external">
          <span class="icon icon-rss"></span>
        </a>
      
    
  </div>
  <div>Theme <a href='https://github.com/stkevintan/hexo-theme-material-flow' class="codename">MaterialFlow</a>  Powered by<a href="https://blog.i2arch.tech/" target="_blank">程序小工</a>.</div>

</footer>

  <script>setLoadingBarProgress(80);</script>
  

    <script src="//apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
    <script src='//cdn.bootcss.com/node-waves/0.7.5/waves.min.js'></script>
    <script src="//cdn.bootcss.com/scrollReveal.js/3.3.2/scrollreveal.min.js"></script>
    <script src="/js/jquery.fitvids.js"></script>
      <script>
        var GOOGLE_CUSTOM_SEARCH_API_KEY = "";
        var GOOGLE_CUSTOM_SEARCH_ENGINE_ID = "";
        var ALGOLIA_API_KEY = "";
        var ALGOLIA_APP_ID = "";
        var ALGOLIA_INDEX_NAME = "";
        var AZURE_SERVICE_NAME = "";
        var AZURE_INDEX_NAME = "";
        var AZURE_QUERY_KEY = "";
        var BAIDU_API_ID = "fca5b83cf69f752ddc96a61ef64a3659";
        var SEARCH_SERVICE = "hexo";
        var ROOT = "/" || "/";
        if (!ROOT.endsWith('/')) ROOT += '/';
      </script>
      <script src="/js/search.js"></script>
        <script src="/js/app.js"></script>
  <script>setLoadingBarProgress(100);</script>
</body>
</html>
